查看原文
其他

Linux学习-文件和目录

2017-06-09 陈同 生信宝典

为什么要用Linux系统

个人认为,Linux操作系统和类Linux操作系统的命令行界面是最适合进行生物信息分析的操作系统。原因有三点:

  • 长期运行的稳定性

  • 多数软件只有Linux版本

  • 强大的Bash命令简化繁琐的操作,尤其是大大简化重复性工作

但对于初学者来说,接触和理解Linux操作系统需要一些时间和摸索。陡然从可视化点选操作的Windows进入到只有命令行界面的Linux,最大的陌生感是不知道做什么,不知道文件在哪?本文希望能通过几个示例帮助大家适应Linux系统。

如何获取Linux系统

  • 如果自己的单位有共有服务器,可以尝试申请账号。

  • 自己的电脑安装双系统或虚拟机

  • 购买一块云服务器

  • 试验下在线学习平台实验楼 https://www.shiyanlou.com (里面也有不少Linux教程,任意点一个进去,双击桌面的Xfce图标,都可以启动Linux终端)

  • <生信宝典>微信公众号后台回复向管理员索要

初识Linux系统

登录Linux系统后,呈现在眼前的是这样一个界面:

Last login: Mon Jun  5 16:56:56 2017 from 219.241.208.209

Welcome to aliyun Elastic Compute Service!

ct@ehbio:~$

首先解释下出现的这几个字母和符号:

  • ct: 用户名

  • ehbio:如果是登录的远程服务器,则为宿主机的名字

  • ~: 代表家目录, 在我们进入新的目录后,这个地方会跟着改变

  • $: 用来指示普通用户输入命令的地方;对根用户来说一般是#

  • http://bashrcgenerator.com/可视化定制不同的显示方式。

我的电脑在哪?

打开Windows,首先看到的是桌面;不爱整理文件的我,桌面的东西已经多到需要2个屏幕才能显示的完。另外一个常用的就是我的电脑,然后打开D盘,依次点开对应的文件夹,然后点开文件。

Linux的文件系统组织方式与Windows略有不同,登录进去就是家目录,可视为Windows下的桌面。在这个目录下,我们可以新建文件、新建文件夹,就像在桌面上的操作一样。

如果想查看当前目录下都有什么内容,输入命令 ls,回车即可 (ls可以理解为单词list的缩写)。当前目录下什么也没有,所以没有任何输出。

ct@ehbio:~$ ls

如果错把l看成了i,输入了is,则会出现下面的提示未找到命令。如果输入的是Linux基本命令,出现这个提示,基本可以判定是命令输入错了,瞪大眼睛仔细看就是了。 在敲完命令回车后,注意查看终端的输出,以判断是否有问题。

ct@ehbio:~$ is
-bash: is: 未找到命令
# 大小写敏感
ct@ehbio:~$ lS
-bash: lS: 未找到命令

当前目录下只有一个文件,看不出效果,我们可以新建几个文件和文件夹,来查看下。

mkdir是新建一个目录 (make a directory);data是目录的名字。 如果目录存在,则会出现提示,”无法创建已存在的目录”。这时可以使用参数-p忽略这个错误。

ct@ehbio:~$ mkdir data
ct@ehbio:~$ mkdir ls
data
ct@ehbio:~$ mkdir data
mkdir: 无法创建目录"data" : 文件已存在
ct@ehbio:~$ mkdir -p data

cat是一个命令,主要用来查看文件;在这与<<END连用用于读入大段数据。输入cat <<END之后,回车,会看到终端出现一个大于号,大于号后面可以输入内容,再回车,继续输入内容,直到我们输入END (大写的,与上面一致),输入过程结束,我们输入的内容都显示在了屏幕上。

ct@ehbio:~$ mkdir data
ct@ehbio:~$ cat <<END
> a
> bc
> END
a
bc

`>`是一个重定向符号,即把前面命令的输出写入到`>`后面的文件中。如下所示,新建了一个`Fasta`格式的文件。
`ls -l`列出文件的详细信息;`-l`表示命令行参数,是程序预留的一些选项,保证在不更改程序的情况下获得更灵活的操作。可使用`man ls`查看`ls`所有的命令行参数, 上下箭头翻页,按`q`退出查看。(man: manual, 手册)

```bash
ct@ehbio:~$ cat <<END >data/test.fa
> >SOX2
> ACGTCGGCGGAGGGTGGSCGGGGGGGGAGAGGT
> ACGATGAGGAGTAGGAGAGAGGAGG
> >OCT4
> ACGTAGGATGGAGGAGAGGGAGGGGGGAGGAGAGGAA
> AGAGTAGAGAGA
> >NANOG
> ACGATGCGATGCAGCGTTTTTTTTTGGTTGGATCT
> CAGGTAGGAGCGAGGAGGCAGCGGCGGATGCAGGCA
> ACGGTAGCGAGTC
> >mYC HAHA
> ACGGAGCGAGCTAGTGCAGCGAGGAGCTGAGTCGAGC
> CAGGACAGGAGCTA
> end
> END
## 注意命令和参数之间的空格
ct@ehbio:~/data$ ls-l
-bash: ls-l: 未找到命令
ct@ehbio:~$ ls -l
总用量 4
## d: dir; 表示data是个目录
## rwx:表示目录的权限,暂时忽略,或自己在线搜索
drwxrwxr-x 2 ct ct 4096 6月   8 14:52 data
ct@ehbio:~$ ls -l data
总用量 4
## 开头的`-`表示test.fa是个文件
-rw-rw-r-- 1 ct ct 284 6月   8 14:48 test.fa

查看写入的文件的内容,cat 文件名;需要注意的是文件所在的目录,默认是当前目录;如下面第一个命令,会提示cat: test.fa: 没有那个文件或目录,是因为当前目录下不存在文件test.fa。(注意文件末尾的end)

ct@ehbio:~$ cat test.fa
cat: test.fa: 没有那个文件或目录
ct@ehbio:~$ cat data/test.fa
>SOX2
ACGTCGGCGGAGGGTGGSCGGGGGGGGAGAGGT
ACGATGAGGAGTAGGAGAGAGGAGG
>OCT4
ACGTAGGATGGAGGAGAGGGAGGGGGGAGGAGAGGAA
AGAGTAGAGAGA
>NANOG
ACGATGCGATGCAGCGTTTTTTTTTGGTTGGATCT
CAGGTAGGAGCGAGGAGGCAGCGGCGGATGCAGGCA
ACGGTAGCGAGTC
>mYC HAHA
ACGGAGCGAGCTAGTGCAGCGAGGAGCTGAGTCGAGC
CAGGACAGGAGCTA
end

test.fa在目录data下,可以先进入data目录,然后再查看文件。类比于Windows下先点开一个文件夹,再点开下面的文件。

cd (change dir)切换目录。

head查看文件最开始的几行,默认为10行,可使用-n 6指定查看前6行。

ct@ehbio:~$ cd data
ct@ehbio:~/data$ head -n 6 test.fa
>SOX2
ACGTCGGCGGAGGGTGGSCGGGGGGGGAGAGGT
ACGATGAGGAGTAGGAGAGAGGAGG
>OCT4
ACGTAGGATGGAGGAGAGGGAGGGGGGAGGAGAGGAA
AGAGTAGAGAGA

另外lessmore也可以用来查看文件,尤其是文件内容特别多的时候。

ct@ehbio:~/data$ less test.fa
# q: 退出
# 上下箭头、空格翻页

前面使用的命令,有几个用到了参数如ls -l, head -n 6等,需要注意的是命令跟参数之间要有空格

终端运行man ls可以查看ls所有可用的参数,上下箭头翻页,按q退出查看。(man: manual, 手册)

ct@ehbio:~/data$ man ls
NAME
      ls - list directory contents

SYNOPSIS
      ls [OPTION]... [FILE]...

DESCRIPTION
      List  information  about  the  FILEs  (the current directory by default).
      Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

      Mandatory arguments to long options are mandatory for short options too.

      -a, --all
             do not ignore entries starting with .

      -A, --almost-all
             do not list implied . and ..

      --author
             with -l, print the author of each file

      -b, --escape
             print C-style escapes for nongraphic characters
      ....

两个有意思的命令,tac: 文件翻转;rev每列反转。

ct@iZ8vb3e9jtel4m99ss6e7eZ:~/data$ cat <<END | tac
> first
> second
> third
> END
third
second
first
ct@iZ8vb3e9jtel4m99ss6e7eZ:~/data$ cat <<END | rev
> abcde
> xyz
> END
edcba
zyx

注:

  • 这里我们假设所有的文件和文件夹都放置于家目录下

  • Linux的家目录严格来说可能类似于Windows下的C:\Users\ct

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存